我們知道程式碼執行的位置是在call stack當中,但JavaScript程式碼是如何執行的?
在討論JavaScript程式碼的執行前,要先談談execution context(EC),EC是一個抽象的概念,call stack就是由EC組合而成,在任何的JavaScript project中,無論這個project有多大,都只有一個global EC,也就是top-level code執行的地方,top-level code指的是在函數外的程式碼。
EC是由什麼組成的?
當函數被呼叫後,會產生EC,EC包含了函數運作所需的全部資料:
上述資料都是在程式碼執行前的所謂創建階段(creation phase)生成的。
值得注意的是,arrow function的EC裡面並沒有引數物件也沒有this關鍵字,但它可以使用離它最近的父級正則函數(regular function parent)所擁有的引數物件及this關鍵字。